部署harbor私有镜像仓库及k3s离线部署集群 | 您所在的位置:网站首页 › harbor离线安装 kubernetes › 部署harbor私有镜像仓库及k3s离线部署集群 |
k3s安装文档:https://docs.k3s.io/zh/ 根据官方文档中的内容,我们在部署k3s集群前,要确保拥有应该在我们的离线环境下可以访问的私有镜像仓库。 1.部署私有镜像仓库 1.1安装docker 使用官方安装脚本自动安装 安装命令如下: Bash curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh 1.2安装docker-compose 1.2.1下载 下载的是2.3.4的版本,harbor需要1.2.8以上的版本。 如果服务器网络无法下载,也可手动下载,然后上传服务器,并将文件夹修改为docker-compose Bash curl -L "https://github.com/docker/compose/releases/download/2.3.4/docker-compose-$(uname -s)-$(uname -m)" -o/usr/local/bin/docker-compose 因为网络环境不是很好,恰好服务器上安装着python3,所以使用pip3进行下载 Bash python3 -m pip install --index-url https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com docker-compose 1.2.2添加可执行权限 Bash chmod docker-compose 1.2.3测试 Bash mv docker-compose /usr/local/bin/ #下载的是二进制文件,移动到这个目录下面 docker-compose --version 1.3安装harbor 1.3.1下载 直接从服务器下载离线安装包,网络不好的可以下载后传入服务器。 Bash wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-offline-installer-v2.6.1.tgz 1.3.2解压 Bash tar -zxvf harbor-offline-installer-v2.6.1.tgz 1.3.3修改配置文件 Bash cd harbor cp harbor.yml.tmpl harbor.yml vi harbor.yml 1.3.4安装 Bash ./install.sh docker-compose down -v #停止harbor docker-compose up -d #启动harbor 1.3.5登录验证 2.部署k3s集群 2.1先决条件 在安装 K3s 之前,完成上面的私有镜像仓库或手动部署镜像操作,预填充 K3s 需要安装的镜像。 从 Releases 页面下载 K3s 二进制文件,该文件需要匹配用于获取离线镜像的版本。将二进制文件放在每个离线节点上的 /usr/local/bin 中,并确保文件是可执行的。 在 get.k3s.io 下载 K3s 安装脚本。将安装脚本放在每个离线节点上的任何位置,并将其命名为 install.sh。需要下载的文件包括:k3s二进制文件:k3s.bin,K3s 安装脚本:k3s-install.sh,K3s 需要安装的镜像:k3s-airgap-images-amd64.tar。 2.2在离线环境中安装 K3s 2.2.1镜像仓库配置文件(引用官方文档的内容) 该文件由两个主要部分组成: mirrors configsMirrors Mirrors 是用于定义私有镜像仓库名称和端点的指令,例如: Bash mirrors: mycustomreg.com: endpoint: - "https://mycustomreg.com:5000" 每个 mirror 都必须有一个名称和一组端点。从镜像仓库中拉取镜像时,containerd 会逐个尝试这些端点 URL,并使用第一个有效的 URL。 重定向 如果将公共镜像仓库用作 Mirror,例如在配置通过缓存拉取时,镜像拉取将被透明地重定向。 例如,如果你为 docker.io 配置了一个 Mirror: Bash mirrors: docker.io: endpoint: - "https://mycustomreg.com:5000" 然后,拉取 docker.io/rancher/coredns-coredns:1.6.3 将透明地从 https://mycustomreg.com:5000/rancher/coredns-coredns:1.6.3 拉取镜像。 Configs configs 部分定义了每个 mirror 的 TLS 和凭证配置。对于每个 mirror,你可以定义 auth 和/或 tls。 tls 部分包括: 指令 描述 cert_file 客户端证书路径,用于向镜像仓库进行身份验证 key_file 客户端密钥路径,用于向镜像仓库进行身份验证 ca_file 定义用于验证镜像仓库服务器证书文件的 CA 证书路径 insecure_skip_verify 定义是否应跳过镜像仓库的 TLS 验证的布尔值 auth 部分由用户名/密码或身份验证令牌组成: 指令 描述 username 私有镜像仓库基本身份验证的用户名 password 私有镜像仓库基本身份验证的用户密码 auth 私有镜像仓库基本身份验证的身份验证令牌 总结 根据上面的配置总结如下: Bash # vim registries.yaml mirrors: docker.io: endpoint: - "http://mycustomreg.com:5000" #因为没有使用https协议,使用直接写http就行。 #因为harbor仓库的镜像都是公开的,使用不需要重新定向。 configs: "mycustomreg.com:5000": auth: username: # this is the registry username password: # this is the registry password 2.2.2安装主节点 Bash mkdir -p /etc/rancher/k3s #创建目录 mv registries.yaml /etc/rancher/k3s #指定镜像仓库 chmond +x k3s.bin #添加可执行权限 mv k3s.bin k3s #修改二进制文件名称 chmond +x k3s-install.sh #添加可执行权限 mv k3s /usr/local/bin/ #把二进制文件放到指定目录下 INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_k3s_EXEC="--node-taint k3s-controlplane=true:NoExecute" ./k3s-install.sh #运行安装文件 [INFO] systemd: Starting k3s #看到这个表示安装完成 kubectl get no #获取节点信息 Bash NAME STATUS ROLES AGE VERSION ubuntu Ready control-plane,master 3h52m v1.28.3-rc2+k3s2 2.2.3安装从节点 之前在部署从节点的时候遇的坑,安装完成后从节点无法使用kubectl命令行工具。 Bash cd /etc/rancher/k3s/ #进入主节点的路径 cp k3s.yaml config #复制k3s主节点配置文件 cat /var/lib/rancher/k3s/server/token #获取主节点token scp registries.yaml [email protected]:/etc/rancher/k3s #将镜像仓库配置文件复制到从节点 mkdir /root/.kube/ #创建目录 scp config [email protected]:/root/ #将配置文件复制到从节点,配置环境变量 vim config #将server: https:指定到主机点的IP地址 chmond +x k3s.bin #添加可执行权限 mv k3s.bin k3s #修改二进制文件名称 chmond +x k3s-install.sh #添加可执行权限 mv k3s /usr/local/bin/ #把二进制文件放到指定目录下 INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://1.1.1.2:6443 K3S_TOKEN=K10925705c9ad2864f1c2c4d27d36e73bbe49cde9bdb8e6d9264d3f8696b0dcd4fc::server:ec9749dd126481de43c3f8ce51a9eef3 ./k3s-install.sh #安装,指定主节点端口,已经之前的获取到的token 安装完成后 Bash kubectl get no #获取节点信息 Bash NAME STATUS ROLES AGE VERSION ubuntu2 Ready 3h52m v1.28.3-rc2+k3s2 ubuntu Ready control-plane,master 4h19m v1.28.3-rc2+k3s2 #可以看到已经加入成功了。 2.2.4为从节点添加角色 Bash kubectl label nodes ubuntu1 node-role.kubernetes.io/worker= #使用kubectl添加角色,然后再获取节点信息。 kubectl get no NAME STATUS ROLES AGE VERSION ubuntu2 Ready worker 3h52m v1.28.3-rc2+k3s2 ubuntu Ready control-plane,master 4h19m v1.28.3-rc2+k3s2 #添加角色成功 |
CopyRight 2018-2019 实验室设备网 版权所有 |